map()
可以讓你對每個元素使用函數去替換舊的函數
void main() {
var numbersByTwo = const [1, -2, 3, 42].map((number) => number * 2);
print('Numbers: $numbersByTwo');
}
Numbers: (2, -4, 6, 84)
使用map()
讓元素都變兩倍從(1, -2, 3, 42)變成(2, -4, 6, 84)
非同步操作可以讓你在等待長期工作的結果的同時執行其他工作
以下是常使用非同步的情境:
Future 表示非同步操作的結果,可以有兩種狀態:uncompleted 或 completed
uncompleted future: future正在等待函數的非同步操作完成或拋出錯誤。
completed future: 如果非同步操作成功,future 以一個值結束,或著它會丟出error。
Future<void> fetchUserOrder() {
// Imagine that this function is fetching user info from another service or database.
return Future.delayed(const Duration(seconds: 2), () => print('Large Latte'));
}
void main() {
fetchUserOrder();
print('Fetching user order...');
}
Fetching user order...
Large Latte
我們可以看到使用Future.delayed()
並加上秒數可以等待2秒後再print值,所以會造成先print出Fetching user order,然後兩秒到了才會print出Large Latte
參考資料:
https://dart.dev/codelabs/async-await
https://medium.flutterdevs.com/exploring-asynchronous-programming-in-dart-flutter-25f341af32f